/***
题目链接：移除重复节点
编写代码，移除未排序链表中的重复节点。保留最开始出现的节点。
https://leetcode-cn.com/problems/remove-duplicate-node-lcci/
***/

class Solution {
public:
    ListNode* removeDuplicateNodes(ListNode* head) {
        //用unordered_set保存已经出现过的节点值，
        //要是 set_.count()!=0,则指向下一个节点。
        unordered_set <int> u_set;
        ListNode* dummy = new ListNode(0);
        if (head == nullptr)return nullptr;
        ListNode* cur = dummy;
        while(head != nullptr){
            if (u_set.count(head->val) == 0) {
                u_set.insert(head->val);
                cur->next = head;
                cur = cur->next;   
            }
            head = head->next; 
        }
        cur->next = nullptr;
        return dummy->next;
    }
};